home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1995 #1 / Amiga Plus 1995 #1.iso / fish-disketten / fish_941-950 / d949 / bbbbs / bbbbs65.lha / rexx / ArcAlpha.rexx < prev    next >
OS/2 REXX Batch file  |  1993-07-30  |  7KB  |  285 lines

  1. /* $VER: ArcAlpha.rexx 6.2 © 1993 Richard Lee Stockton (30.7.93)
  2. archives user defined alphafilelist into file in users email
  3. receives its arguments from rexxDoors/Make_BrowseList.rexx
  4. copyright 1991-93 Richard Lee Stockton FREELY DISTRIBUTABLE
  5. */
  6.  
  7. CALL TIME('R')
  8. SIGNAL ON ERROR
  9. SIGNAL ON SYNTAX
  10. OPTIONS FAILAT 999999
  11.  
  12. PARSE ARG name lastbrowse alphaflag libflag numlist
  13. lastbrowse=STRIP(lastbrowse)
  14.  
  15. CALL CLOSE(STDOUT)
  16. CALL OPEN(STDOUT,'RAM:ArcAlpha.STDOUT','W')
  17. SAY STRIP(SUBSTR(SOURCELINE(1),3))
  18. SAY
  19.  
  20. IF ~DATATYPE(lastbrowse,'N') | name='' | numlist='' THEN
  21.   CALL GETOUT(20)
  22.  
  23. figarg='s:CONFIG.BBS'
  24. IF ~EXISTS(figarg) THEN figarg='BBS:BBS_TEXT/CONFIG.BBS'
  25. x=OPEN(f,figarg,'R')
  26. IF x=0 THEN
  27.   DO
  28.     SAY 's:CONFIG.BBS and BBS:BBS/CONFIG.BBS are both missing!'
  29.     CALL GETOUT(21)
  30.   END
  31. lynes.=''
  32. DO i=1 TO 33
  33.   lynes.i=READLN(f)
  34. END
  35. CALL CLOSE(f)
  36.  
  37. compos=POS('/*',lynes.1)
  38. IF compos>0 THEN lynes.1=LEFT(lynes.1,compos-1)
  39. bbsname = STRIP(lynes.1)
  40.  
  41. sysop   = WORD(lynes.2,1)
  42.  
  43. bbspath = WORD(lynes.6,1)
  44. IF ~EXISTS(bbspath) THEN
  45.   DO
  46.     SAY bbspath 'does not exist!'
  47.     CALL SETCLIP('BBS_ALPHA')
  48.     CALL GETOUT(22)
  49.   END
  50. testchar=RIGHT(bbspath,1)
  51. IF testchar~='/' & testchar~=':' THEN bbspath=bbspath'/'
  52.  
  53. DO i=1
  54.   IF GETCLIP('BBS_ALPHA'i)='' THEN  /* info clip for external STOP */
  55.     DO
  56.       CALL SETCLIP('BBS_ALPHA'i,name)
  57.       clipnum=i
  58.       LEAVE i
  59.     END
  60. END
  61. CALL PRAGMA('P',-3)         /* lower the priority of this task */
  62.  
  63. extension=WORD(lynes.32,1)
  64. arccom=lynes.33
  65. compos=POS('/*',lynes.33)
  66. IF compos>0 THEN lynes.33=LEFT(lynes.33,compos-1)
  67. arccom=STRIP(lynes.33)
  68. IF LEFT(extension,1)~='.' THEN
  69.   DO
  70.     extension='.lzh'
  71.     arccom='lharc -m m'
  72.   END
  73.  
  74. filepath=bbspath'EmailFiles/'name
  75. CALL MAKEDIR(filepath)
  76. x=OPEN(f,bbspath'Numbers/LastMail','R')
  77. IF x~=0 THEN lastm=READLN(f)+1
  78. CALL CLOSE(f)
  79. ADDRESS COMMAND 'ECHO >'bbspath'Numbers/LastMail 'lastm
  80. alphaname=filepath'/BBBBS_'lastm
  81.  
  82. filelist.=''
  83. filelist.0=0
  84. IF alphaflag='D' THEN
  85.   DO
  86.     x=OPEN(f,bbspath'Lists/Files','R')
  87.     IF x=0 THEN CALL GETOUT(24)
  88.     DO i=1
  89.       line=READLN(f)
  90.       IF EOF(f) THEN LEAVE i
  91.       num=WORD(line,1)
  92.       IF ~DATATYPE(num,'W') THEN ITERATE i
  93.       filelist.num=WORD(line,3)
  94.       IF num>filelist.0 THEN filelist.0=num
  95.     END
  96.     CALL CLOSE(f)
  97.   END
  98.  
  99. alphalist.=''
  100. x=OPEN(f,bbspath'Lists/Files.ALPHA','R')
  101. IF x=0 THEN CALL GETOUT(24)
  102. DO i=1
  103.   line=READLN(f)
  104.   IF EOF(f) THEN LEAVE i
  105.   alphalist.i=line
  106.   IF alphaflag='D' THEN
  107.     DO
  108.       num=WORD(line,3)
  109.       filelist.num.0=i
  110.     END
  111. END
  112. CALL CLOSE(f)
  113. alphalist.0=i-1
  114. numba=alphalist.0
  115.  
  116. x=OPEN(a,alphaname,'W')
  117. IF x=0 THEN CALL GETOUT(25)
  118. title='=' bbsname
  119. IF alphaflag='A' THEN title=title 'alphabetical'
  120. ELSE title=title 'newest to oldest'
  121. title=title', single-line file descriptions'
  122. CALL WRITELN(a,title)
  123. CALL WRITELN(a,'= Custom archived for' name'  'DATE() TIME('C'))
  124. IF libflag='A' THEN
  125.   DO
  126.     CALL WRITELN(a,'')
  127.     CALL WRITELN(a,'Filename          Bytes File# Library         KeyWords')
  128.     CALL WRITELN(a,LEFT('=',77,'='))
  129.   END
  130. CALL CLOSE(a)
  131.  
  132. x=OPEN(f,bbspath'Email/'name'/BBBBS.'lastm,'W')
  133. IF x=0 THEN CALL GETOUT(28)
  134. CALL WRITELN(f,' Mail: 'lastm'   FILE: BBBBS_'lastm)
  135. CALL WRITELN(f,' From: BBBBS')
  136. CALL WRITELN(f,'   To: 'name)
  137. CALL WRITELN(f,' Subj: AlphaList')
  138. CALL WRITELN(f,' Date: 'DATE('W') DATE() TIME('C'))
  139. CALL WRITELN(f,LEFT('=',75,'='))
  140. CALL WRITELN(f,'Here are the single line file descriptions you requested.')
  141. CALL WRITELN(f,'The collection process was interrupted.')
  142. CALL CLOSE(f)
  143.  
  144. IF alphaflag='A' THEN
  145.   DO
  146.     IF libflag='L' THEN
  147.       DO i=1 TO WORDS(numlist)
  148.         CALL write_alist(WORD(numlist,i))
  149.       END
  150.     ELSE CALL write_alist(numlist)
  151.   END
  152. ELSE
  153.   DO
  154.     IF libflag='L' THEN
  155.       DO i=1 TO WORDS(numlist)
  156.         CALL write_dlist(WORD(numlist,i))
  157.       END
  158.     ELSE CALL write_dlist(numlist)
  159.   END
  160.  
  161. IF WORD(STATEF(alphaname),2)<40 THEN CALL GETOUT(26)
  162. CALL PRAGMA('P',0)         /* normal priority */
  163. ADDRESS COMMAND arccom alphaname||extension alphaname
  164. IF ~EXISTS(alphaname||extension) THEN CALL GETOUT(27)
  165. CALL PRAGMA('P',-3)
  166. x=OPEN(f,bbspath'Email/'name'/BBBBS.'lastm,'W')
  167. IF x=0 THEN CALL GETOUT(28)
  168. CALL WRITELN(f,' Mail: 'lastm'   FILE: BBBBS_'lastm||extension)
  169. CALL WRITELN(f,' From: BBBBS')
  170. CALL WRITELN(f,'   To: 'name)
  171. CALL WRITELN(f,' Subj: AlphaList')
  172. CALL WRITELN(f,' Date: 'DATE('W') DATE() TIME('C'))
  173. CALL WRITELN(f,LEFT('=',75,'='))
  174. CALL WRITELN(f,'Here are the single line file descriptions you requested.')
  175. t=(.5+TIME('E'))%1
  176. min=t%60
  177. hrs=min%60
  178. min=min//60
  179. sec=t//60
  180. temp='It took'
  181. IF hrs>1 THEN temp=temp hrs 'hours'
  182. ELSE IF hrs=1 THEN temp=temp '1 hour'
  183. IF min>1 THEN temp=temp min 'minutes'
  184. ELSE IF min=1 THEN temp=temp '1 minute'
  185. IF sec=1 THEN temp=temp '1 second'
  186. ELSE IF sec>0 THEN temp=temp sec 'seconds'
  187. temp=temp 'to compile this list.'
  188. CALL WRITELN(f,temp)
  189. CALL CLOSE(f)
  190.  
  191. IF GETCLIP('BBS_level')~='' & WORD(GETCLIP('BBS_lastcaller'),1)=name THEN
  192.   DO
  193.     oldmess=GETCLIP('BBS_MESSAGE')
  194.     IF oldmess~='' THEN oldmess=oldmess||'0D0A'x
  195.     CALL SETCLIP('BBS_MESSAGE',oldmess||'Your archived alphabetical filelist is waiting in Email.')
  196.   END
  197. CALL GETOUT(0)
  198. EXIT
  199.  
  200.  
  201. write_alist:
  202. ARG nlist
  203. nlist=STRIP(nlist)
  204. x=OPEN(a,alphaname,'A')
  205. IF x=0 THEN RETURN
  206. IF libflag='L' THEN
  207.   DO
  208.     CALL WRITELN(a,'')
  209.     CALL WRITELN(a,'File Library' nlist)
  210.     CALL WRITELN(a,'Filename          Bytes File# Library         KeyWords')
  211.     CALL WRITELN(a,LEFT('=',77,'='))
  212.   END
  213. count=0
  214. DO j=1 TO alphalist.0
  215.   IF j//5=0 THEN
  216.     DO
  217.       t=GETCLIP('BBS_STOP_ALPHA'clipnum)
  218.       IF t~='' THEN CALL cleanup(t)
  219.     END
  220.   IF WORD(alphalist.j,3)<=lastbrowse THEN ITERATE j
  221.   IF FIND(nlist,WORD(alphalist.j,4))=0 THEN ITERATE j
  222.   CALL WRITELN(a,alphalist.j)
  223.   count=count+1
  224. END
  225. CALL WRITELN(a,' 'count' files.')
  226. CALL WRITELN(a,'')
  227. CALL CLOSE(a)
  228. RETURN
  229.  
  230.  
  231. write_dlist:
  232. ARG nlist
  233. nlist=STRIP(nlist)
  234. x=OPEN(a,alphaname,'A')
  235. IF x=0 THEN RETURN
  236. IF libflag='L' THEN
  237.   DO
  238.     CALL WRITELN(a,'')
  239.     CALL WRITELN(a,'File Library' nlist)
  240.     CALL WRITELN(a,'Filename          Bytes File# Library         KeyWords')
  241.     CALL WRITELN(a,LEFT('=',77,'='))
  242.   END
  243. count=0
  244. DO k=filelist.0 TO 1 BY -1
  245.   IF filelist.k='' THEN ITERATE k
  246.   IF k//5=0 THEN
  247.     DO
  248.       t=GETCLIP('BBS_STOP_ALPHA'clipnum)
  249.       IF t~='' THEN CALL cleanup(t)
  250.     END
  251.   IF k<=lastbrowse THEN LEAVE k
  252.   j=filelist.k.0
  253.   IF ~DATATYPE(j,'W') THEN ITERATE k
  254.   IF FIND(nlist,WORD(alphalist.j,4))=0 THEN ITERATE k
  255.   CALL WRITELN(a,alphalist.j)
  256.   count=count+1
  257. END
  258. CALL WRITELN(a,' 'count' files.')
  259. CALL WRITELN(a,'')
  260. CALL CLOSE(a)
  261. RETURN
  262.  
  263.  
  264. cleanup:
  265. ARG t2 .
  266. CALL CLOSE(a)
  267. SAY 'User aborted!'
  268. IF t2='DELETE' THEN ADDRESS COMMAND 'c:delete' alphaname
  269. CALL GETOUT(0)
  270. RETURN
  271.  
  272.  
  273. ERROR:
  274. SYNTAX:
  275. GETOUT:
  276. ARG errorout 
  277. CALL SETCLIP('BBS_BROWSE')
  278. CALL SETCLIP('BBS_ALPHA'clipnum)
  279. CALL SETCLIP('BBS_STOP_ALPHA'clipnum)
  280. IF errorout>0 THEN SAY 'ArcAlpha error' errorout'!'
  281. EXIT(errorout)
  282.  
  283.  
  284. /* ArcAlpha.rexx */
  285.